001 /* 002 * NeoBio.java 003 * 004 * Copyright 2003 Sergio Anibal de Carvalho Junior 005 * 006 * This file is part of NeoBio. 007 * 008 * NeoBio is free software; you can redistribute it and/or modify it under the terms of 009 * the GNU General Public License as published by the Free Software Foundation; either 010 * version 2 of the License, or (at your option) any later version. 011 * 012 * NeoBio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 013 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 014 * PURPOSE. See the GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License along with NeoBio; 017 * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 018 * Boston, MA 02111-1307, USA. 019 * 020 * Proper attribution of the author as the source of the software would be appreciated. 021 * 022 * Sergio Anibal de Carvalho Junior mailto:sergioanibaljr@users.sourceforge.net 023 * Department of Computer Science http://www.dcs.kcl.ac.uk 024 * King's College London, UK http://www.kcl.ac.uk 025 * 026 * Please visit http://neobio.sourceforge.net 027 * 028 * This project was supervised by Professor Maxime Crochemore. 029 * 030 */ 031 032 package neobio.gui; 033 034 import java.io.*; 035 import java.awt.*; 036 import java.awt.event.*; 037 import javax.swing.*; 038 import javax.swing.border.*; 039 import java.applet.*; 040 import java.util.*; 041 import java.net.URL; 042 import java.beans.PropertyVetoException; 043 044 /** 045 * This class is a simple GUI utility for computing pairwise sequence alignments using one 046 * of the the algorithms provided in the {@link neobio.alignment} package. 047 * 048 * @author Sergio A. de Carvalho Jr. 049 */ 050 public class NeoBio extends JFrame 051 { 052 private JMenu file_menu, help_menu; 053 private JMenuBar menu_bar; 054 private JMenuItem new_alignment_item, exit_menuitem, about_menuitem; 055 private JSeparator mid_separator; 056 private JToolBar file_toolbar; 057 private JPanel toolbar_panel; 058 private JButton alignment_button; 059 060 private JDesktopPane desktop_pane; 061 062 /** 063 * Creates a new instance of a graphical interface. 064 */ 065 public NeoBio() 066 { 067 super(); 068 069 setTitle("NeoBio"); 070 setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE); 071 initComponents(); 072 073 show(); 074 075 // always open pairwise alignment internal frame 076 pairwiseAlignment(); 077 } 078 079 private void initComponents() 080 { 081 URL icon; 082 083 // window closing event 084 addWindowListener(new WindowAdapter() 085 { 086 public void windowClosing(WindowEvent e) 087 { 088 exitForm(); 089 } 090 }); 091 092 Container content_pane = getContentPane(); 093 094 desktop_pane = new JDesktopPane(); 095 096 content_pane.add (desktop_pane, BorderLayout.CENTER); 097 098 new_alignment_item = new JMenuItem("Pairwise Alignment"); 099 new_alignment_item.setMnemonic('p'); 100 new_alignment_item.addActionListener(new ActionListener() 101 { 102 public void actionPerformed(ActionEvent e) 103 { 104 newAlignmentActionPerformed(e); 105 } 106 }); 107 icon = getClass().getResource("icons/alignment.gif"); 108 if (icon != null) new_alignment_item.setIcon(new ImageIcon(icon)); 109 110 mid_separator = new JSeparator(); 111 112 exit_menuitem = new JMenuItem("Exit"); 113 exit_menuitem.setMnemonic('x'); 114 exit_menuitem.addActionListener(new ActionListener() 115 { 116 public void actionPerformed(ActionEvent e) 117 { 118 exitMenuItemActionPerformed(e); 119 } 120 }); 121 122 file_menu = new JMenu("File"); 123 file_menu.setMnemonic('f'); 124 file_menu.add(new_alignment_item); 125 file_menu.add(mid_separator); 126 file_menu.add(exit_menuitem); 127 128 about_menuitem = new JMenuItem("About"); 129 about_menuitem.addActionListener(new ActionListener() 130 { 131 public void actionPerformed(ActionEvent e) 132 { 133 aboutMenuItemActionPerformed(e); 134 } 135 }); 136 icon = getClass().getResource("icons/help.gif"); 137 if (icon != null) about_menuitem.setIcon(new ImageIcon(icon)); 138 139 help_menu = new JMenu("Help"); 140 help_menu.add(about_menuitem); 141 142 menu_bar = new JMenuBar(); 143 //menu_bar.setFont(getFont()); 144 menu_bar.add(file_menu); 145 menu_bar.add(help_menu); 146 147 setJMenuBar(menu_bar); 148 149 alignment_button = new JButton(); 150 alignment_button.setMnemonic('p'); 151 alignment_button.setToolTipText("Pairwise Alignment..."); 152 alignment_button.addActionListener(new ActionListener() 153 { 154 public void actionPerformed(ActionEvent e) 155 { 156 newAlignmentActionPerformed(e); 157 } 158 }); 159 icon = getClass().getResource("icons/alignment.gif"); 160 if (icon != null) alignment_button.setIcon(new ImageIcon(icon)); 161 162 file_toolbar = new JToolBar(); 163 file_toolbar.setRollover(true); 164 file_toolbar.add(alignment_button); 165 166 toolbar_panel = new JPanel(); 167 toolbar_panel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); 168 toolbar_panel.setBorder(new EtchedBorder()); 169 toolbar_panel.add(file_toolbar); 170 171 content_pane.add(toolbar_panel, BorderLayout.NORTH); 172 173 // set frame size 174 Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); 175 setSize((screen.width * 2) / 3, (screen.height * 7) / 8); 176 setLocation(screen.width / 6, screen.height / 16); 177 } 178 179 private void aboutMenuItemActionPerformed (ActionEvent e) 180 { 181 (new AboutDialog(this)).show(); 182 } 183 184 private void exitMenuItemActionPerformed (ActionEvent e) 185 { 186 exitForm(); 187 } 188 189 private void exitForm () 190 { 191 System.exit(0); 192 } 193 194 private void newAlignmentActionPerformed (ActionEvent e) 195 { 196 pairwiseAlignment(); 197 } 198 199 private void pairwiseAlignment () 200 { 201 PairwiseAlignmentFrame alignment_frame = new PairwiseAlignmentFrame (this); 202 203 desktop_pane.add (alignment_frame); 204 205 alignment_frame.setBounds(0, 0, 500, 500); 206 alignment_frame.show(); 207 alignment_frame.toFront(); 208 209 try 210 { 211 alignment_frame.setMaximum (true); 212 } 213 catch (PropertyVetoException e) {} 214 } 215 216 /** 217 * Create and run a new interface. The main method takes no parameter from the 218 * command line. 219 * 220 * @param args command line arguments 221 */ 222 public static void main(String args[]) 223 { 224 new NeoBio(); 225 } 226 }